import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import javax.print.attribute.standard.PresentationDirection;
import java.util.List;

public class RedisDemoString {
    public static void test01(Jedis jedis){
        System.out.println("mset 和 mget");
        // values是可以重复的
        // keys的那个key是不可以重复的
        jedis.mset("key","111","key2","222","key3","333");

        // 可变长的参数
        List<String> values = jedis.mget("key","key2","key3");
        System.out.println("values: " + values);
    }

    public static void test02(Jedis jedis){
        System.out.println("getrange 和 setrange");
        jedis.flushAll();

        jedis.set("key","abcdefgeijkl");
        String s = jedis.getrange("key",2,5);
        System.out.println("s: " + s);

        // []闭区间
        jedis.setrange("key",2,"xyz");
        String value = jedis.get("key");
        System.out.println("key: " + value);
    }

    public static void test03(Jedis jedis){
        System.out.println("append");
        jedis.flushAll();

        jedis.set("key","abcdef");
        jedis.append("key","ghi");
        String value = jedis.get("key");

        System.out.println("value: " + value);
    }

    public static void test04(Jedis jedis){
        System.out.println("incr 和 decr");
        jedis.flushAll();

        jedis.set("key","100");
        // 返回自增之后的结果
        long result = jedis.incr("key");
        System.out.println("result: " + result);

        String value = jedis.get("key");
        System.out.println("value: " + value);

        result = jedis.decr("key");
        System.out.println("result: " + result);

        value = jedis.get("key");
        System.out.println("value: " + value);
    }

    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");

        // 从jedis的池子里获取到具体的连接
        try(Jedis jedis = jedisPool.getResource()){
            // test01(jedis);
            // test02(jedis);
            // test03(jedis);
            test04(jedis);
        }
    }
}
